/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.eventos.beans;

import java.util.ArrayList;
import javax.faces.context.FacesContext;
import org.cip.esymons.general.be.PersonaJuridica;
import org.cip.esymons.general.be.PersonaNatural;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.model.SelectItem;
import org.cip.esymons.eventos.bc.ContratanteDelegate;
import org.cip.esymons.general.be.Departamento;
import org.cip.esymons.general.be.DireccionPersona;
import org.cip.esymons.general.be.Distrito;
import org.cip.esymons.general.be.Provincia;
import org.cip.esymons.general.be.TelefonoSolicitante;
import org.cip.esymons.general.be.TipoZona;
import org.cip.esymons.general.be.Via;
import org.cip.esymons.general.util.Utiles;
//
/**
 *
 * @author Lizardo
 */
public class ContratanteController {

    //<editor-fold defaultstate="collapsed" desc="Declaración de variables">
    PersonaJuridica personaJuridica;
    PersonaNatural personaNatural;
    DireccionPersona direccion;
    DireccionPersona direccionSeleccionada;
    TelefonoSolicitante telefono;
    TelefonoSolicitante telefonoSeleccionada;
    Distrito distrito;
    Via via;
    TipoZona zona;

    List<DireccionPersona> listaDireccion;
    List<TelefonoSolicitante> listaTelefono;

    ContratanteDelegate delegado;

    Integer tipoPersona;
    Integer codDepartamento;
    Integer codProvincia;
    Integer codDistrito;
    Integer codVia;
    Integer codZona;

    Boolean banContratante;
    int opcion = 0; //0=ninguna, 1=insertar, 2=actualizar

    // // </editor-fold>

    //<editor-fold defaultstate="collapsed" desc="Constructor">
    public ContratanteController() {
        inicializar();
    }

    // // </editor-fold>

    //<editor-fold defaultstate="collapsed" desc="Gets y Sets">
    public Integer getCodDepartamento() {
        return codDepartamento;
    }

    public void setCodDepartamento(Integer codDepartamento) {
        this.codDepartamento = codDepartamento;
    }

    public Integer getCodDistrito() {
        return codDistrito;
    }

    public void setCodDistrito(Integer codDistrito) {
        this.codDistrito = codDistrito;
    }

    public Integer getCodProvincia() {
        return codProvincia;
    }

    public void setCodProvincia(Integer codProvincia) {
        this.codProvincia = codProvincia;
    }

    public Integer getCodVia() {
        return codVia;
    }

    public void setCodVia(Integer codVia) {
        this.codVia = codVia;
    }

    public Integer getCodZona() {
        return codZona;
    }

    public void setCodZona(Integer codZona) {
        this.codZona = codZona;
    }

    public DireccionPersona getDireccion() {
        return direccion;
    }

    public void setDireccion(DireccionPersona direccion) {
        this.direccion = direccion;
    }

    public DireccionPersona getDireccionSeleccionada() {
        return direccionSeleccionada;
    }

    public void setDireccionSeleccionada(DireccionPersona direccionSeleccionada) {
        this.direccionSeleccionada = direccionSeleccionada;
    }

    public List<DireccionPersona> getListaDireccion() {
        return listaDireccion;
    }

    public void setListaDireccion(List<DireccionPersona> listaDireccion) {
        this.listaDireccion = listaDireccion;
    }

    public List<TelefonoSolicitante> getListaTelefono() {
        return listaTelefono;
    }

    public void setListaTelefono(List<TelefonoSolicitante> listaTelefono) {
        this.listaTelefono = listaTelefono;
    }

    public PersonaJuridica getPersonaJuridica() {
        return personaJuridica;
    }

    public void setPersonaJuridica(PersonaJuridica personaJuridica) {
        this.personaJuridica = personaJuridica;
    }

    public PersonaNatural getPersonaNatural() {
        return personaNatural;
    }

    public void setPersonaNatural(PersonaNatural personaNatural) {
        this.personaNatural = personaNatural;
    }

    public TelefonoSolicitante getTelefono() {
        return telefono;
    }

    public void setTelefono(TelefonoSolicitante telefono) {
        this.telefono = telefono;
    }

    public TelefonoSolicitante getTelefonoSeleccionada() {
        return telefonoSeleccionada;
    }

    public void setTelefonoSeleccionada(TelefonoSolicitante telefonoSeleccionada) {
        this.telefonoSeleccionada = telefonoSeleccionada;
    }

    public Integer getTipoPersona() {
        return tipoPersona;
    }

    public void setTipoPersona(Integer tipoPersona) {
        this.tipoPersona = tipoPersona;
    }

    public ContratanteDelegate getDelegado() {
        return delegado;
    }

    public void setDelegado(ContratanteDelegate delegado) {
        this.delegado = delegado;
    }

    public Boolean getBanContratante() {
        return banContratante;
    }

    public void setBanContratante(Boolean banContratante) {
        this.banContratante = banContratante;
    }



    // // </editor-fold>

    //<editor-fold defaultstate="collapsed" desc="Validaciones">
    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }



    // // </editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="Metodos">
    public String inicializar() {
        personaJuridica = new PersonaJuridica();
        personaNatural = new PersonaNatural();
        direccion = new DireccionPersona();
        direccionSeleccionada = new DireccionPersona();
        telefono = new TelefonoSolicitante();
        telefonoSeleccionada = new TelefonoSolicitante();
        distrito = new Distrito();
        via = new Via();
        zona = new TipoZona();
        listaDireccion = new ArrayList<DireccionPersona>();
        listaTelefono = new ArrayList<TelefonoSolicitante>();
        delegado = new ContratanteDelegate();
        tipoPersona = 0;
        codDepartamento = 0;
        codProvincia = 0;
        codDistrito = 0;
        codVia = 0;
        codZona = 0;
        banContratante = true;
        return null;
    }
    
    public String inicializarContratante() {
        personaJuridica = new PersonaJuridica();
        personaNatural = new PersonaNatural();
        tipoPersona = 0;
        return null;
    }

    public String inicializarDireccion() {
        direccion = new DireccionPersona();
        distrito = new Distrito();
        via = new Via();
        zona = new TipoZona();
        codDepartamento = 0;
        codProvincia = 0;
        codDistrito = 0;
        codVia = 0;
        codZona = 0;
        return null;
    }

    public String inicializarTelefono() {
        telefono = new TelefonoSolicitante();
        return null;
    }

    public String buscarSolicitantes() {
        if (buscarSolicitante()) {
            listarDireccion();
            listarTelefono();
        }
        return null;
    }

    public boolean buscarSolicitante() {
        if (tipoPersona == 1) {
            try {
                personaNatural = delegado.buscarDni(personaNatural.getPerNroDNI());
                banContratante = (personaNatural.getSolCodigo() != null) ? false : true;
                if (banContratante) mostrarMensaje("WARN: ", "Esta Persona no existe", FacesMessage.SEVERITY_WARN);
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En buscar a la persona por DNI", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
                return false;
            }
        } else {
            try {
                String ruc = personaJuridica.getSolRUC();
                personaJuridica = delegado.buscaRucV2(ruc);
                banContratante = (personaJuridica.getSolCodigo() != null) ? false : true;
                if (banContratante) mostrarMensaje("WARN: ", "Esta Empresa no existe", FacesMessage.SEVERITY_WARN);
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En buscar a la empresa por RUC", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
                return false;
            }
        }
        return true;
    }

    public String agregarContratante() {
        opcion = 1;
        if (tipoPersona == 1) {
            //validamos datos de la persona
            if (!validarDatosPersona()) return null;
            //personaNatural = new PersonaNatural();
            personaNatural.setPerActivo(true);
            String correoPersonal1 = (personaNatural.getSolcorreopersonal1().compareTo("-- no tiene correo --")==0) ? null : personaNatural.getSolcorreopersonal1();
            String correoPersonal2 = (personaNatural.getSolcorreopersonal2().compareTo("-- no tiene correo --")==0) ? null : personaNatural.getSolcorreopersonal2();
            String correoEmpresa = (personaNatural.getSolcorreoempresa().compareTo("-- no tiene correo --")==0) ? null : personaNatural.getSolcorreoempresa();
            personaNatural.setSolcorreopersonal1(correoPersonal1);
            personaNatural.setSolcorreopersonal2(correoPersonal2);
            personaNatural.setSolcorreoempresa(correoEmpresa);
            try {
                delegado.registrarPersona(personaNatural);
                mostrarMensaje("INFO: ", "Contratante registrado con exito", FacesMessage.SEVERITY_INFO);
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En registrar a la persona", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
            }
        } else {
            //validamos datos de la empresa
            if (!validarDatosEmpresa()) return null;
            //personaJuridica = new PersonaJuridica();
            String correoPersonal1 = (personaJuridica.getSolcorreopersonal1().compareTo("-- no tiene correo --")==0) ? null : personaJuridica.getSolcorreopersonal1();
            String correoPersonal2 = (personaJuridica.getSolcorreopersonal2().compareTo("-- no tiene correo --")==0) ? null : personaJuridica.getSolcorreopersonal2();
            String correoEmpresa = (personaJuridica.getSolcorreoempresa().compareTo("-- no tiene correo --")==0) ? null : personaJuridica.getSolcorreoempresa();
            personaJuridica.setSolcorreopersonal1(correoPersonal1);
            personaJuridica.setSolcorreopersonal2(correoPersonal2);
            personaJuridica.setSolcorreoempresa(correoEmpresa);
            try {
                delegado.registrarEmpresa(personaJuridica);
                mostrarMensaje("INFO: ", "Contratante registrado con exito", FacesMessage.SEVERITY_INFO);
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En registrar a la empresa", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
            }
        }
        banContratante = false;
        return null;
    }

    public String actualizarContratante() {
        opcion = 2;
        if (tipoPersona == 1) {
            //validamos datos de la persona
            if (!validarDatosPersona()) return null;
            try {
                delegado.actualizarPersona(personaNatural);
                mostrarMensaje("INFO: ", "Contratante actualizado con exito", FacesMessage.SEVERITY_INFO);
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En actualizar al contratante", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
            }
        } else {
            //validamos datos de la empresa
            if (!validarDatosEmpresa()) return null;
            try {
                delegado.actualizarEmpresa(personaJuridica);
                mostrarMensaje("INFO: ", "Contratante actualizado con exito", FacesMessage.SEVERITY_INFO);
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En actualizar a la empresa", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
            }
        }
        //banContratante = false;
        return null;
    }

    public String agregarDireccion() {
        //direccion = new DireccionPersona();
        if (!buscarSolicitante()) return null;
        if (tipoPersona == 1) {
            direccion.setSolCodigo(personaNatural);
        } else {
            direccion.setSolCodigo(personaJuridica);
        }
        codDistrito = (codDistrito != null) ? codDistrito : 0;
        codVia = (codVia != null) ? codVia : 0;
        codZona = (codZona != null) ? codZona : 0;

        try {
            distrito = delegado.buscarDistrito(codDistrito);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "En buscar al distrito", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
            return null;
        }
        try {
            via = delegado.buscarVia(codVia);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "En buscar via", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
            return null;
        }
        try {
            zona = delegado.buscarZona(codZona);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "En buscar zona", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
            return null;
        }
        direccion.setDisCodigo(distrito);
        direccion.setViaCodigo(via);
        direccion.setZonaCodigo(zona);

        try {
            delegado.registrarDireccion(direccion);
            mostrarMensaje("INFO: ", "Se agregó la dirección con éxito.", FacesMessage.SEVERITY_INFO);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al agregar la dirección del contratante...", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
            return null;
        }
        inicializarDireccion();
        return listarDireccion();
    }

    public boolean validarDatosPersona() {
        if (!Utiles.validarStrings(personaNatural.getPerNroDNI())) {
            mostrarMensaje("WARN: ", "Ingrese numero de DNI", FacesMessage.SEVERITY_WARN);
            return false;
        }
        if (!Utiles.validarStrings(personaNatural.getPerapellidoPaterno())) {
            mostrarMensaje("WARN: ", "Ingrese Apellido Paterno del contratante", FacesMessage.SEVERITY_WARN);
            return false;
        }
        if (!Utiles.validarStrings(personaNatural.getPerapellidoMaterno())) {
            mostrarMensaje("WARN: ", "Ingrese Apellido MAterno del contratante", FacesMessage.SEVERITY_WARN);
            return false;
        }
        if (!Utiles.validarStrings(personaNatural.getPerNombres())) {
            mostrarMensaje("WARN: ", "Ingrese Nombres del contratante", FacesMessage.SEVERITY_WARN);
            return false;
        }
        if (opcion == 1) {
            try {
                if (delegado.buscarDni(personaNatural.getPerNroDNI()).getSolCodigo() != null) {
                    mostrarMensaje("WARN: ", "Este DNI ya existe", FacesMessage.SEVERITY_WARN);
                    return false;
                }
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En buscar por DNI", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
                return false;
            }

            try {
                if (delegado.buscarApellidosNombres(personaNatural.getPerapellidoPaterno(), personaNatural.getPerapellidoMaterno(), personaNatural.getPerNombres()).getSolCodigo() != null) {
                    mostrarMensaje("WARN: ", "Esta persona ya existe", FacesMessage.SEVERITY_WARN);
                    return false;
                }
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En buscar a la persona", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
                return false;
            }
        }
        return true;
    }

    public boolean validarDatosEmpresa() {
        if (!Utiles.validarStrings(personaJuridica.getSolRUC())) {
            mostrarMensaje("WARN: ", "Ingrese numero de RUC del contratante", FacesMessage.SEVERITY_WARN);
            return false;
        }
        if (!Utiles.validarStrings(personaJuridica.getEmprazonSocial())) {
            mostrarMensaje("WARN: ", "Ingrese nombre de la razón social", FacesMessage.SEVERITY_WARN);
            return false;
        }

        if (opcion == 1) {
            try {
                if (delegado.buscaRucV2(personaJuridica.getSolRUC()).getSolCodigo() != null) {
                    mostrarMensaje("WARN: ", "Este RUC ya existe", FacesMessage.SEVERITY_WARN);
                    return false;
                }
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En buscar RUC de la empresa", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
                return false;
            }
            try {
                if (delegado.buscaRazonSocial(personaJuridica.getEmprazonSocial()).getSolCodigo() != null) {
                    mostrarMensaje("WARN: ", "Esta razon social ya existe", FacesMessage.SEVERITY_WARN);
                    return false;
                }
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En buscar razón social de la empresa", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
                return false;
            }
        }
        return true;
    }

    public String nuevo() {
        inicializar();
        return null;
    }

    public String quitarDireccion() {
        try {
            delegado.eliminarDireccion(direccionSeleccionada);
            listarDireccion();
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al eliminar la dirección del contratante...", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return listarDireccion();
    }

    public String agregarTelefono() {
        if (tipoPersona == 1) {
            try {
                personaNatural = delegado.buscarDni(personaNatural.getPerNroDNI());
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En buscar la persona por DNI", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
                return null;
            }
            telefono.setSolCodigo(personaNatural);
        } else {
            try {
                personaJuridica = delegado.buscaRuc(personaJuridica.getSolRUC());
            } catch (Exception ex) {
                mostrarMensaje("ERROR: ", "En buscar la empresa por RUC", FacesMessage.SEVERITY_ERROR);
                System.out.println("FATAL: " + ex.getMessage());
                return null;
            }
            telefono.setSolCodigo(personaJuridica);
        }
        telefono.setTsoEstado(true);
        try {
            delegado.registrarTelefono(telefono);
            mostrarMensaje("INFO: ", "Se agregó el teléfono con éxito.", FacesMessage.SEVERITY_INFO);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "En registrar telefono del contratante", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
            return null;
        }
        inicializarTelefono();
        return listarTelefono();
    }

    public String listarDireccion() {
        try {
            Long solCodigo = 0L;
            if (tipoPersona==1) {
                solCodigo = personaNatural.getSolCodigo();
            } else {
                solCodigo = personaJuridica.getSolCodigo();
            }
            listaDireccion = delegado.listarDireccion(solCodigo);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "En listar dirección del contratante", FacesMessage.SEVERITY_ERROR);
            System.out.println("ERROR: " + ex.getMessage());
        }
        return null;
    }

    public String listarTelefono() {
        try {
            Long solCodigo = 0L;
            if (tipoPersona==1) {
                solCodigo = personaNatural.getSolCodigo();
            } else {
                solCodigo = personaJuridica.getSolCodigo();
            }
            listaTelefono = delegado.listarTelefonos(solCodigo);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "En listar telefono del contratante", FacesMessage.SEVERITY_ERROR);
            System.out.println("ERROR: " + ex.getMessage());
        }
        return null;
    }

    public String quitarTelefono() {
        try {
            delegado.eliminarTelefono(telefonoSeleccionada);
            listarTelefono();
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al eliminar el telefono del contratante...", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return listarTelefono();
    }




    // // </editor-fold>

    //<editor-fold defaultstate="collapsed" desc="Menus Despegables (combos)">
    public SelectItem[] getComboDepartamentos() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            //codigoEvento = 3; //borrar esta linea
            System.out.println("codigoDepartamento: " + codDepartamento);
            //List<ModuloCurso> listaModulos = delegadoModuloCurso.listarModuloXCurso(codigoEvento);
            List<Departamento> listaDepartamento = delegado.listarDepartamentos();
            selects = new SelectItem[listaDepartamento.size()];
            int cont = 0;
            for (Departamento dpto : listaDepartamento) {
                SelectItem item = new SelectItem(dpto.getDepCodigo(), dpto.getDepNombre());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen departamentos");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboProvincias() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            //codigoEvento = 3; //borrar esta linea
            System.out.println("codigoProvincia: " + codProvincia);
            //List<ModuloCurso> listaModulos = delegadoModuloCurso.listarModuloXCurso(codigoEvento);
            codDepartamento = (codDepartamento != null) ? codDepartamento : 0;
            Departamento dpto = new Departamento();
            dpto = delegado.buscarDepartamento(codDepartamento);
            List<Provincia> listaProvincia = delegado.listarProvincias(dpto);
            selects = new SelectItem[listaProvincia.size()];
            int cont = 0;
            for (Provincia prov : listaProvincia) {
                SelectItem item = new SelectItem(prov.getProCodigo(), prov.getProNombre());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen provincias");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboDistritos() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            //codigoEvento = 3; //borrar esta linea
            System.out.println("codigoDistrito: " + codDistrito);
            //List<ModuloCurso> listaModulos = delegadoModuloCurso.listarModuloXCurso(codigoEvento);
            codProvincia = (codProvincia != null) ? codProvincia : 0;
            Provincia prov = new Provincia();
            prov = delegado.buscarProvincia(codProvincia);
            List<Distrito> listaDistritos = delegado.listarDistritos(prov);
            selects = new SelectItem[listaDistritos.size()];
            int cont = 0;
            for (Distrito dist : listaDistritos) {
                SelectItem item = new SelectItem(dist.getDisCodigo(), dist.getDisNombre());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen distritos");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboVias() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            //codigoEvento = 3; //borrar esta linea
            System.out.println("codigoVia: " + codVia);
            //List<ModuloCurso> listaModulos = delegadoModuloCurso.listarModuloXCurso(codigoEvento);
            List<Via> listaVia = delegado.listarVias();
            selects = new SelectItem[listaVia.size()];
            int cont = 0;
            for (Via v : listaVia) {
                SelectItem item = new SelectItem(v.getViaCodigo(), v.getViaNombre());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen vías");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboZonas() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            //codigoEvento = 3; //borrar esta linea
            System.out.println("codigoZona: " + codZona);
            //List<ModuloCurso> listaModulos = delegadoModuloCurso.listarModuloXCurso(codigoEvento);
            List<TipoZona> listaZonas = delegado.listarZonas();
            selects = new SelectItem[listaZonas.size()];
            int cont = 0;
            for (TipoZona z : listaZonas) {
                SelectItem item = new SelectItem(z.getZonCodigo(), z.getZonNombre());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen zonas");
            selects[0] = item;
            return selects;
        }
    }
    // // </editor-fold>

}